from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QPushButton, QVBoxLayout
# 在PyQt5中，要在MainWindow中使用widget的按钮信号，您需要首先在MainWindow类中继承自QMainWindow，然后重写showEvent方法。在这个方法中，您可以连接widget的按钮信号和槽函数。这是一个简单的例子
# 在这个例子中，我们创建了一个名为MyWidget的自定义窗口小部件，其中包含一个按钮。我们重写了MainWindow类的showEvent方法，以便在窗口显示时连接MyWidget中的按钮信号和槽函数。这样，当您点击按钮时，两个打印语句将输出到控制台。
class MyWidget(QWidget):
    def __init__(self):
        super().__init__()

        self.button = QPushButton('Click me', self)
        self.button.clicked.connect(self.on_button_clicked)

        layout = QVBoxLayout(self)
        layout.addWidget(self.button)
        self.setLayout(layout)

    def on_button_clicked(self):
        print('Button clicked!')

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.widget = MyWidget()
        self.setCentralWidget(self.widget)

    def showEvent(self, event):
        super().showEvent(event)

        # Connect the widget's button signal to a slot
        self.widget.button.clicked.connect(self.on_widget_button_clicked)

    def on_widget_button_clicked(self):
        print('MainWindow button clicked!')

if __name__ == '__main__':
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()



